<?php
//***********************************************************************
// Назначение: Передача товаров из 1С в virtuemart
// Модуль: vmshop_1c.php - Основной модуль
// Автор оригинала: Дуденков М.В. (email: mihail@termservis.ru)
// Помогали разрабатывать:	Alexandr Datsiuk
//							Павел Михнев
//                          CALEORT
// Авторские права: использовать, а также распространять данный скрипт
//                  разрешается только с разрешением автора скрипта
//***********************************************************************
//Системные параметры
define ( 'VM_VERSION', '2.0.5' ); 	// Версия скрипта. Будет обновляться!
define ( 'VM_CODING', 'UTF-8' ); 	// Кодировка выгрузки заказов (пока не применяется)
define ( 'VM_DB', 'yes' ); 			// Обнулять таблицы перед выгрузкой?
define ( 'VM_ZIP', 'yes' ); 		// Использование zip архивов
define ( 'VM_ZIPSIZE', 16480000 ); 	// максимальный размер архива в байтах
define ( 'VM_LOG', 'time' ); 		// вести логи по времени (time), по дате (date), один лог (one)
//Параметры изображения категории
define ( 'VM_CAT_IMG', 'yes' ); 	// Применять картинку к категории
define ( 'VM_CAT_RAND', 'r' ); 		// Выбор картинки ( r - рандомом, p - первая )
//Параметры отвечающие за налог
define ( 'VM_NDS', 'yes' ); 		// Учитывать в цене из 1С налог НДС? 
define ( 'VM_NDS_COUNTRY', 'RUS' ); // Страна учета НДС?
//Параметры отвечающие за поставки товара
define ( 'VM_POSTAVKA_E', 'yes' ); 	// Использовать модуль поставки (заменяет картинку в случае отсутствия товара)
define ( 'VM_POSTAVKA', '3-5d.gif' ); 	// Вставляет текст или картинку (например: on-order.gif или в наличии)
define ( 'VM_POSTAVKA_TIME', '432000' ); 	// Ориентировачное время поставки в секундах, т.е. 5д*24ч*60м*60с = 432000
//Параметры thumbnails изображения
define ( 'VM_TBN_H', '90' ); 		// Высота thumbnails изображения
define ( 'VM_TBN_W', '90' ); 		// Ширина thumbnails изображения
define ( 'VM_TBN_RED', '255' ); 	// Подложка thumbnails изображения (Красный - 255)	-	>			
define ( 'VM_TBN_GREEN', '255' ); 	// Подложка thumbnails изображения (Зеленый - 255)	-		>	Все вместе - белый
define ( 'VM_TBN_BLUE', '255' ); 	// Подложка thumbnails изображения (Синий - 255)	-	>
define ( 'VM_TBN_QTY', '80' ); 		// Качество thumbnails изображения (максимум 100)
//Параметры отвечающие за каталог
define ( 'VM_LIST_CAT', '5' ); 		// Сколько отображать товаров в каталоге 
define ( 'VM_DEF_CASHGR', 'РО' ); 		// название основной категории цен (у меня это Розничная)
//Параметры отвечающие за выгрузку заказов
define ( 'VM_USER_SHOP', 'no' );	// Создать поля для регистрации новых клиентов (Банковские реквизиты: ИНН, КПП и т.д.)
define ( 'VM_CLIENT', 1 ); 			// 0 - Выгружать всех клиентов в 1С на контрагента "Физ лицо"  1- Выгружать всех клиентов в 1С как есть
define ( 'VM_NDS_SHIP', '18' );		// Ставка НДС для услуги доставки

//-------------------------------Далее редактировать на свой страх и риск!!!!--------------------------------------
set_time_limit (0);

define ( 'VM_1CEXPORT', true );
ini_set ( 'display_errors', '1' );
error_reporting ( E_ALL );
define ( '_JEXEC', 1 );
define ( 'DS', DIRECTORY_SEPARATOR );
define ( 'JPATH_BASE', dirname ( __FILE__ ) . '' );
define ( 'JPATH_BASE_1C', JPATH_BASE . DS .'components'.DS.'com_virtuemart'.DS.'1cexport' );

require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
require ( 'libraries' .DS. 'joomla' .DS. 'factory.php');
$mainframe = & JFactory::getApplication ( 'site' );
$mainframe->initialise ();
$db = & JFactory::getDBO ();
jimport ( 'joomla.error.log' );
jimport ( 'joomla.user.helper' );
if (VM_LOG == 'time')
{
	$log = &JLog::getInstance ( 'vmshop_1c_'.date('y_m_d_H_i').'.log.php' );
}
elseif (VM_LOG == 'date')
{
	$log = &JLog::getInstance ( 'vmshop_1c_'.date('y_m_d').'.log.php' );
}
elseif (VM_LOG == 'one')
{
	$log = &JLog::getInstance ( 'vmshop_1c.log.php' );
}
else
{
	$log = &JLog::getInstance ( 'vmshop_1c.log.php' );
}

//Проверяем версию магазина
if (!class_exists( 'vmVersion' ))
{
	require (JPATH_BASE . DS . 'administrator' . DS . 'components' . DS . 'com_virtuemart' . DS . 'version.php');
	$VMVERSION = explode ( " ", $shortversion );
}
$version = $VMVERSION[1];
$version_status = $VMVERSION[2];

if ($version == "2.0.0" and $version_status == "Final")
{
	define ( 'VM_VERVM', '2' );
	define ( 'VM_VERVM_S', 'F' );
	define ( 'LANG', '_ru_ru' ); // для россии!!!
}
elseif ($version == "1.1.9" and $version_status == "stable")
{
	define ( 'VM_VERVM', '1' );
	define ( 'VM_VERVM_S', 'S' );
}
elseif ($version == "2.0.0-RC-2M" and $version_status == "release candidate") //Candidat 2.0.0-RC-2M
{
	define ( 'VM_VERVM', '2' );
	define ( 'VM_VERVM_S', 'C' );
}
else // <1.1.9
{
	define ( 'VM_VERVM', '1' );
	define ( 'VM_VERVM_S', 'S' );
}

if (VM_VERVM == '2')
{
	define ( 'JPATH_BASE_PICTURE', JPATH_BASE .DS.'images'.DS.'stories'.DS.'virtuemart'.DS.'product' );
	define ( 'JPATH_PICTURE', 'images'.DS.'stories'.DS.'virtuemart'.DS.'product' );
}
else
{
	define ( 'JPATH_BASE_PICTURE', JPATH_BASE .DS.'components'.DS.'com_virtuemart'.DS.'shop_image'.DS.'product' );
	define ( 'JPATH_CAT_PICTURE', JPATH_BASE .DS.'components'.DS.'com_virtuemart'.DS.'shop_image'.DS.'category' );
}
define ( 'JPATH_BASE_PICTURE_SMALL', JPATH_BASE_PICTURE .DS.'resized' );

if (VM_VERVM == '2')
{
	define ( 'DBBASE', 'virtuemart' );
	require_once(JPATH_BASE_1C .DS.'translit.php');
}
else
{
	define ( 'DBBASE', 'vm' );
}

if (file_exists(JPATH_BASE_1C .DS.'login.tmp'))
{
	$handle = fopen(JPATH_BASE_1C .DS.'login.tmp', "r");
}
else
{
	$handle = fopen(JPATH_BASE_1C .DS.'login.tmp', "w+");
}
$id = 0;

while (!feof($handle)) 
{
    $buffer[$id] = fgets($handle, 4096);
	$id++;
}

if (!empty($buffer[0]) and !empty($buffer[1]))
{
	$id_admin = $buffer[0];
	$username = $buffer[1];
}
else
{
	$id_admin = 0;
}

require_once(JPATH_BASE_1C .DS.'adapt.php');

$sql = "SELECT registration FROM #__".$dba['userfield_db']." WHERE name ='vm_fullname'";
$db->setQuery($sql);
$adapt = $db->loadResult ();

if (empty($adapt) and VM_USER_SHOP == 'yes')
{
	require_once(JPATH_BASE_1C .DS.'adaptvm.php');
}

if (isset($_REQUEST['mode'])) 
{
	//?mode=checkauth
	if( $_REQUEST['mode'] == 'checkauth') 
	{
		$log->addEntry ( array ('comment' => 'Скрипт адптации 1С и магазина Virtuemart версии: '.$version. ' Релиз: ' .$version_status.', версия скрипта: '.VM_VERSION.', обнуление базы перед выгрузкой: '.VM_DB.', выгрузка архивом: '.VM_ZIP) );
		$log->addEntry ( array ('comment' => 'Этап 1) Авторизация на сервере') );
		require_once(JPATH_BASE_1C .DS.'checkauth.php');
		fwrite($handle, $somecontent);
	} 
	//?mode=init
	elseif( $_REQUEST['mode'] == 'init') 
	{
		$log->addEntry ( array ('comment' => 'Этап 2) Инициализация выгрузки: Выгружать в архиве - '.VM_ZIP.', размер - '.VM_ZIPSIZE) );
		require_once(JPATH_BASE_1C .DS.'init.php');
	} 
	elseif( $_REQUEST['mode'] == 'file') 
	{
		$log->addEntry ( array ('comment' => 'Этап 3) Выгрузка файлов или архива и его распаковка') );
		require_once(JPATH_BASE_1C .DS.'file.php');
	} 
	elseif( $_REQUEST['mode'] == 'import') 
	{
		$log->addEntry ( array ('comment' => 'Этап 4) Импорт содержимого файлов') );
		require_once(JPATH_BASE_1C .DS.'import.php');
	} 
	elseif( $_REQUEST ['mode'] == 'success') 
	{
		$log->addEntry ( array ('comment' => '1С закончила загрузку заказов') );
		print 'success\n';
	}
	elseif( $_REQUEST ['mode'] == 'query') 
	{
		$log->addEntry ( array ('comment' => 'Этап 2) Построение заказов') );
		require_once(JPATH_BASE_1C .DS.'createzakaz.php');
	}
	else 
	{
		$log->addEntry ( array ('comment' => 'Операция выгрузки завершена') );
		print 'success\n';
		exit;
	}
} 
else 
{
	$log->addEntry ( array ('comment' => 'Операция выгрузки завершена') );
	print 'success\n';
	exit;
}
?>